package cn.org.eshow.service.impl;

import cn.org.eshow.bean.query.ProductItemQuery;
import cn.org.eshow.common.page.Page;
import cn.org.eshow.dao.ProductItemDao;
import cn.org.eshow.model.ProductItem;
import cn.org.eshow.service.ProductItemManager;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.jws.WebService;
import java.util.Date;
import java.util.List;

@WebService(serviceName = "ProductItemService", endpointInterface = "cn.org.eshow.service.ProductItemManager")
@Service
public class ProductItemManagerImpl extends GenericManagerImpl<ProductItem, Integer> implements ProductItemManager {

    @Autowired
    ProductItemDao productItemDao;

    public ProductItemManagerImpl() {
    }

    @Autowired
    public ProductItemManagerImpl(ProductItemDao productItemDao) {
        super(productItemDao);
        this.productItemDao = productItemDao;
    }

    @Override
    public List<ProductItem> list(ProductItemQuery query) {
        return productItemDao.list(query);
    }

    @Override
    public Page<ProductItem> search(ProductItemQuery query) {
        return productItemDao.search(query);
    }

    @Override
    public ProductItem check(ProductItemQuery query) {
        List<ProductItem> list = productItemDao.list(query);
        if (!list.isEmpty()) {
            return list.get(0);
        }
        return null;
    }

    public Long count(ProductItemQuery query){
        return productItemDao.count(query);
    }

    @Override
    public ProductItem updateProductItem(ProductItem old, ProductItem productItem) {
        old.setUpdateTime(new Date());
        old.setTitle(!StringUtils.isEmpty(productItem.getTitle() ) ? productItem.getTitle() : old.getTitle());
        old.setPrice(productItem.getPrice() != null ? productItem.getPrice() : old.getPrice());
        old.setImg(productItem.getImg() != null && !productItem.getImg().isEmpty() ? productItem.getImg() : old.getImg());
        old.setDescription(productItem.getDescription() != null ? productItem.getDescription() : old.getDescription());
        old.setState(productItem.getState() != null ? productItem.getState() : old.getState());
        return productItemDao.save(old);
    }


}